Processor systems can include memory subsystems made up of diverse types of memory, such as internal/external cache, internal static random access memory (“SRAM”), external synchronous dynamic random access memory (“SDRAM”), and Flash memory, to name a few. While these different memory types have heterogeneous properties in areas like performance, power, and size, many operating systems (“OSs”) do not provide any inherent support for these different memory subsystems. Consequently, applications, drivers, and OS kernels of these processor systems are pre-configured at runtime with pre-configured memory policies to use only fixed types of memory. The pre-configured solution might not be the best, as for example, when performance sensitive applications would benefit from use of faster memory and/or a higher priority role in cache occupancy. The pre-configured solution might also adversely impact system performance where a power sensitive application might benefit from use of low-power memory. This lack of inherent support for diverse memory subsystems therefore prevents many applications and Independent Software Vendors (“ISVs”) from effectively exploiting optimizations in memory performance, power, and space.